package com.zuo_book.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zuo_book.dto.UserInfoDTO;
import org.springframework.web.multipart.MultipartFile;

/**
 * 用户服务接口
 */
public interface UserService {
    
    /**
     * 获取用户信息
     * @param userId 用户ID
     * @return 用户信息
     */
    UserInfoDTO getUserInfo(Long userId);
    
    /**
     * 根据用户ID获取用户信息
     * @param userId 用户ID
     * @return 用户信息
     */
    UserInfoDTO getUserById(Long userId);
    
    /**
     * 获取当前登录用户信息
     * @return 用户信息
     */
    UserInfoDTO getCurrentUserInfo();
    
    /**
     * 更新用户信息
     * @param userInfoDTO 用户信息
     */
    void updateUserInfo(UserInfoDTO userInfoDTO);
    
    /**
     * 上传用户头像
     * @param file 头像文件
     * @return 头像URL
     */
    String uploadAvatar(MultipartFile file);
    
    /**
     * 修改密码
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     */
    void changePassword(String oldPassword, String newPassword);
    
    /**
     * 分页查询用户列表（管理员使用）
     * @param page 页码
     * @param size 每页大小
     * @param keyword 关键字
     * @return 用户列表
     */
    Page<UserInfoDTO> listUsers(int page, int size, String keyword);
    
    /**
     * 启用/禁用用户（管理员使用）
     * @param userId 用户ID
     * @param status 状态
     */
    void updateUserStatus(Long userId, Integer status);
    
    /**
     * 更新用户角色（管理员使用）
     * @param userId 用户ID
     * @param role 角色
     */
    void updateUserRole(Long userId, String role);

    /**
     * 查询用户id是否存在
     */
    boolean checkUserId(Long id);


} 